/*
Opleiding	: Basisvaardigheden SQL Query's schrijven van SQLTeam.NL
Module		: Gegevens aggregeren

Uitwerkingen van de opdrachten
------------------------------

Aandachtspunten bij het maken van de opdrachten:
* Gebruik altijd tabel aliassen
* Gebruik altijd veld aliassen
* Denk aan de formattering van de query
* Hoewel niet verteld, is het verstandig om SQL functies altijd in hoofdletters te schrijven

Succes!
*/

/*
	Opdracht
	--------
	- Geef uit de tabel dbo.Posts het aantal records per LastEditorDisplayName
	- Filter de data waarbij de CreationDate in 2010 ligt
	- Filter de data waarbij de LastEditorDisplayName gevuld is
	- Sorteer de data op LastEditorDisplayName
*/
SELECT
	p.LastEditorDisplayName	AS LaatsteEditor,
	COUNT(Id)				AS AantalBerichten
FROM dbo.Posts p
WHERE p.CreationDate >= '2010-01-01' AND p.CreationDate < '2011-01-01'
	AND p.LastEditorDisplayName IS NOT NULL
GROUP BY p.LastEditorDisplayName
ORDER BY p.LastEditorDisplayName

/*
	Opdracht
	--------
	- Geef uit de tabel dbo.Posts het totaal aantal
	  ViewCounts per LastEditorDisplayName
	- Sorteer de data aflopend op het hoogste aantal ViewCounts
	- Filter de data waarbij het totaal aantal ViewCounts meer dan 1 is
	- Filter de data waarbij de CreationDate in februari 2009 ligt
	- Filter de data waarbij de LastEditorDisplayName gevuld is
*/
SELECT
	p.LastEditorDisplayName	AS LaatsteEditor,
	SUM(ViewCount)			AS AantalViews
FROM dbo.Posts p
WHERE p.CreationDate >= '2009-02-01' AND p.CreationDate < '2009-03-01'
	AND p.LastEditorDisplayName IS NOT NULL
GROUP BY p.LastEditorDisplayName
HAVING SUM(ViewCount) > 1
ORDER BY 2 DESC

